﻿using Payroll.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Payroll.BusinessLogic.CustomerManager
{
    public partial interface IResultService
    {
        /// <summary>
        /// Saves the specified result.
        /// </summary>
        /// <param name="result">The result.</param>
        void Save(Results result);
        void SaveCustomer(Results result);
        /// <summary>
        /// Deletes the specified result id.
        /// </summary>
        /// <param name="resultId">The result id.</param>
        /// <param name="packageCode">The package code.</param>
        /// <param name="fromdate">The fromdate.</param>
        /// <param name="todate">The todate.</param>
        /// <param name="Distributor">The distributor.</param>
        /// <param name="customerName">Name of the customer.</param>
        /// <param name="taxcode">The taxcode.</param>
        /// <param name="mobile">The mobile.</param>
        /// <param name="email">The email.</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <param name="pageIndex">Index of the page.</param>
        /// <returns></returns>
        List<Results> Delete(string resultId, string packageCode = null, string fromdate = null, string todate = null, string Distributor = null, string customerName = null, string taxcode = null, string mobile = null, string email = null, int pageSize = int.MaxValue, int pageIndex = 0);
        void Delete(int resultId);
        /// <summary>
        /// Gets all result.
        /// </summary>
        /// <param name="packageCode">The package code.</param>
        /// <param name="fromdate">The fromdate.</param>
        /// <param name="todate">The todate.</param>
        /// <param name="Distributor">The distributor.</param>
        /// <param name="customerName">Name of the customer.</param>
        /// <param name="taxcode">The taxcode.</param>
        /// <param name="mobile">The mobile.</param>
        /// <param name="email">The email.</param>
        /// <param name="confrim">The confrim.</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <param name="pageIndex">Index of the page.</param>
        /// <returns></returns> 
        List<Results> GetAllResult(string packageCode = null, string fromdate = null, string todate = null, string Distributor = null, string customerName = null, string taxcode = null, string mobile = null, string email = null, int? confrim = 3, int pageSize = int.MaxValue, int pageIndex = 0);
        /// <summary>
        /// Getbies the message ID.
        /// </summary>
        /// <param name="MessageID">The message ID.</param>
        /// <param name="Confirm">The confirm.</param>
        /// <returns></returns>
        List<Results> GetbyMessageID(int MessageID, int Confirm);
        /// <summary>
        /// Gets the customer devices.
        /// </summary>
        /// <param name="Distributor">The distributor(NPP).</param>
        /// <param name="customerName">Name of the customer(Ten KH).</param>
        /// <param name="taxcode">The taxcode(MST khach hang).</param>
        /// <param name="mobile">The mobile(Dt KH).</param>
        /// <param name="email">The email(email Khach hang).</param>
        /// <param name="ResStatus">The res status(Da la KH).</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <param name="pageIndex">Index of the page.</param>
        /// <returns>List of CustomerAttribute</returns>
        PagedList<CustomerAttribute> GetCustomerDevices(string Distributor = null, string customerName = null, string taxcode = null, string mobile = null, string email = null, int? Alert = null, int? ResStatus = 0, string Fromdate = null, string Todate = null, int pageSize = int.MaxValue, int pageIndex = 0);
        /// <summary>
        /// Deletes the specified results id.
        /// </summary>
        /// <param name="ResultsId">The results id.</param>
        /// <param name="Distributor">The distributor.</param>
        /// <param name="customerName">Name of the customer.</param>
        /// <param name="taxcode">The taxcode.</param>
        /// <param name="mobile">The mobile.</param>
        /// <param name="email">The email.</param>
        /// <param name="Alert">The alert.</param>
        /// <param name="ResStatus">The res status.</param>
        /// <param name="pageSize">Size of the page.</param>
        /// <param name="pageIndex">Index of the page.</param>
        /// <returns></returns>
        List<CustomerAttribute> Delete(string ResultsId, string Distributor = null, string customerName = null, string taxcode = null, string mobile = null, string email = null, int? Alert = null, int? ResStatus = 0, string Fromdate = null, string Todate = null, int pageSize = int.MaxValue, int pageIndex = 0);
        List<CustomerAttribute> Confirm(string ResultsId, string Distributor = null, string customerName = null, string taxcode = null, string mobile = null, string email = null, int? Alert = null, int? ResStatus = 0, string Fromdate = null, string Todate = null, int pageSize = int.MaxValue, int pageIndex = 0);

    }
}
